<?php
namespace app\daili\controller;
use app\common\controller\Base;
use jwt\Jwt;
class Login extends Base{
    function login($tel='',$smsCode='',$code=''){
    	if(request()->isPost()){
	    	// var_dump($smsCode);
	    	$validate=$this->validate([
	    		'tel'=>$tel,
	    		'smsCode'=>$smsCode,
	    		//'code'=>$code,
	    	],[
	    		'tel|'.lang('User tel')=>'require',
	    		'smsCode|'.lang('User smsCode')=>'require',
	    		//'code|'.lang('Verification code')=>'require|captcha',
	    	]);
	    	if(true!==$validate){
	    		$this->error($validate);
	    	}
	    	$rs=model('member')->read(['tel'=>$tel]);
			if(!is_numeric($smsCode)){
			// 	echo $smsCode.'是数字型';
			// }
			// else{
			// 	echo $smsCode.'不是数字型';
				$this->error(lang('请输入5位数字的短信验证码'));
			}
	    	if($rs&&$rs['code']===($smsCode*1)){//登录成功
	    		unset($rs['code']);
	    		session(config('keys.daili_user'),$rs->toArray());
                $this->success(lang('Login was successful'),url('index/index'));
                die;
	    	}
	    	else{
	    		$this->error(lang('您输入的短信验证码不正确'));
	    	}
	    	
    	}
    	return view();
    }

    // 账号密码登录
    function reqlogin(){
        if(request()->isPost()){
            // var_dump($smsCode);
            $data=[
            'tel'=>input('tel'),
            'pwd'=>input('pwd'),
                //'code'=>$code,
            ];

            $validate=$this->validate($data,[
                'tel|手机号码'=>'require|mobile',
                // 'code|短信验证码'=>'require',
                'pwd|密码'=>'require|min:6',
                // 'pwd2|确认密码'=>'require',
                // 'status|手机号码'=>'require'
            ]);
            if(true!==$validate){
                $this->error($validate);
            }
            $rs=model('member')->read(['tel'=>$data['tel'],'is_agent'=>1,'login_pwd'=>encrypt_pwd($data['pwd'])]);
            // var_dump(empty($rs));

            // print_r($rs);die;
            // if(!is_numeric($smsCode)){
            // //  echo $smsCode.'是数字型';
            // // }
            // // else{
            // //  echo $smsCode.'不是数字型';
            //     $this->error(lang('请输入5位数字的短信验证码'));
            // }
            if(!empty($rs)){//登录成功
                unset($rs['code']);
                session(config('keys.daili_user'),$rs->toArray());
                $this->success(lang('Login was successful'),url('index/index'));
                die;
            }
            else{
                $this->error(lang('手机号或密码不正确'));
            }
            
        }
    }

    function logout(){
        session(config('keys.daili_user'),null);
        $this->success(lang('Cancellation of success'),url('login'));
    }
    // function register(){
    // 	if(request()->isPost()){
	   //  	$data=$this->request->param();
	   //  	$validate=$this->validate([
	   //  		'name'=>$data['login_name'],
	   //  		'pwd'=>$data['login_pwd'],
	   //  	],[
	   //  		'name|'.lang('User name')=>'require',
	   //  		'pwd|'.lang('User password')=>'require',
	   //  	]);
	   //  	if(true!==$validate)return json($validate,1);

	   //  	$data['s_time']=time();
	   //  	$data['login_pwd']=encrypt_pwd($data['login_pwd']);

	   //  	$rs=model($this->table)->add($data);
	   //  	if(isset($rs['id'])){
	   //  		return json(lang('Register was successful'),0,$rs);
	   //  	}
	   //  	return json(lang('The system is busy'),1);
    // 	}
    // 	return view();
    // }

    /**
     * 发送验证码
     * @param  string $tel 手机号码
     * @param  string $deviceId 设备ID
     * @return [type]      [description]
     */
    function sendCode($tel=null,$deviceId=null){
        $data=[
            'tel'=>input('tel'),
        ];
        $validate=$this->validate($data,[
            'tel|手机号码'=>'require|mobile'
        ]);
        // var_dump(input('post.'));die;
        // var_dump(true!==$validate);die;
        if(true!==$validate){
            return json($validate,1);
        }
        // 验证手机号是否存在 如果不存在则进行新增
        $add=$this->_register($tel,0,true,$deviceId);
        // var_dump($add);die;
        if(!$add['success']){
            return json($add['msg'],1);
        }
        // die;
        $add=$add['data'];
        if(!$add['status']){
            return json('该账号已被限制登录，请联系管理员或者使用别的账号',1);
        }
        $code=rand(10000,99999);
        $content=lang('send code',[$code]);
        $send=sms($tel,$content);
        if($send['code']!=0){
            return json($send['msg'],1);
        }
        $e=isset($add['code'])&&$code==$add['code'];
        // var_dump(isset($add['code']));
        // var_dump($code);
        // var_dump($add['code']);
        // var_dump($code==$add['code']);
        // var_dump($e);die;
        if(!$e){
            $e=model('member')->edit(['id'=>$add['id'],'code'=>$code]);
        }
        if($e){
            $data['id']=$add['id'];
            $data['time']=time();
            $token=Jwt::encode($data);
            return json('验证码发送成功',0,['token'=>$token['data']]);
            die;
        }
        return json('验证码发送失败',1);
    }

    function _register($tel,$pid=0,$checkTel=true,$deviceId=null){
        // var_dump($tel);die;
        if($checkTel){
            $has=model('member')->read(['tel'=>$tel,'is_agent'=>1],'id,code,status,deviceId1,deviceId2');
            if(!empty($has)){
                if(!is_null($deviceId)){
                    if(empty($has['deviceId1'])){
                        model('member')->edit(['deviceId1'=>$deviceId],['id'=>$has['id']]);
                        return success('',0,$has); 
                    }elseif(empty($has['deviceId2'])&&$has['deviceId1']!=$deviceId){
                        model('member')->edit(['deviceId2'=>$deviceId],['id'=>$has['id']]);
                        return success('',0,$has); 
                    }elseif($has['deviceId1']!=$deviceId&&$has['deviceId2']!=$deviceId){
                        return error('每个账号仅允许最多绑定两台设备',1); 
                    }
                }
                return success('',0,$has);
            }
            else{
            	return error('手机号未注册，或者您还不是代理',1);
            }
        }
        $data=[
            'tel'=>$tel,
            'name'=>$tel,
            'pid'=>$pid,
            'module_id'=>1,
            'status'=>1,
            's_time'=>time(),
        ];
        if(!is_null($deviceId)){
            $data['deviceId1']=$deviceId;
        }
        $add=model('member')->add($data);
        // 关联默认角色
        $defaultRole=model('role')->readAll(['is_default'=>1],0,['field'=>'id']);
        if(!empty($add)&&!empty($defaultRole)){
            $r=[];
            foreach ($defaultRole as $v) {
                $r[]=[
                    'role_id'=>$v['id'],
                    'member_id'=>$add['id'],
                ];
            }
            if(count($r)){
                model('role_member')->add($r);
            }
        }
        if(empty($add)){
            return $this->_register($tel,$pid);
        }
        return success('',0,$add);
    }
}
